home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / java / sql / DriverManager.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  6.1 KB  |  310 lines

  1. package java.sql;
  2.  
  3. import java.io.PrintStream;
  4. import java.io.PrintWriter;
  5. import java.security.AccessController;
  6. import java.util.Enumeration;
  7. import java.util.Properties;
  8. import java.util.Vector;
  9. import sun.security.action.GetPropertyAction;
  10.  
  11. public class DriverManager {
  12.    static final SQLPermission SET_LOG_PERMISSION = new SQLPermission("setLog");
  13.    private static Vector writeDrivers = new Vector();
  14.    private static Vector readDrivers = new Vector();
  15.    private static int loginTimeout = 0;
  16.    private static PrintWriter logWriter = null;
  17.    private static PrintStream logStream = null;
  18.    private static boolean initialized = false;
  19.    private static Object logSync = new Object();
  20.  
  21.    public static PrintWriter getLogWriter() {
  22.       return logWriter;
  23.    }
  24.  
  25.    public static void setLogWriter(PrintWriter var0) {
  26.       SecurityManager var1 = System.getSecurityManager();
  27.       if (var1 != null) {
  28.          var1.checkPermission(SET_LOG_PERMISSION);
  29.       }
  30.  
  31.       logStream = null;
  32.       logWriter = var0;
  33.    }
  34.  
  35.    public static Connection getConnection(String var0, Properties var1) throws SQLException {
  36.       ClassLoader var2 = getCallerClassLoader();
  37.       return getConnection(var0, var1, var2);
  38.    }
  39.  
  40.    public static Connection getConnection(String var0, String var1, String var2) throws SQLException {
  41.       Properties var3 = new Properties();
  42.       ClassLoader var4 = getCallerClassLoader();
  43.       if (var1 != null) {
  44.          var3.put("user", var1);
  45.       }
  46.  
  47.       if (var2 != null) {
  48.          var3.put("password", var2);
  49.       }
  50.  
  51.       return getConnection(var0, var3, var4);
  52.    }
  53.  
  54.    public static Connection getConnection(String var0) throws SQLException {
  55.       Properties var1 = new Properties();
  56.       ClassLoader var2 = getCallerClassLoader();
  57.       return getConnection(var0, var1, var2);
  58.    }
  59.  
  60.    public static Driver getDriver(String var0) throws SQLException {
  61.       Object var1 = null;
  62.       println("DriverManager.getDriver(\"" + var0 + "\")");
  63.       if (!initialized) {
  64.          initialize();
  65.       }
  66.  
  67.       Vector var8;
  68.       synchronized(DriverManager.class) {
  69.          var8 = readDrivers;
  70.       }
  71.  
  72.       ClassLoader var9 = getCallerClassLoader();
  73.  
  74.       for(int var3 = 0; var3 < var8.size(); ++var3) {
  75.          DriverInfo var4 = (DriverInfo)var8.elementAt(var3);
  76.          if (getCallerClass(var9, var4.driverClassName) != var4.driverClass) {
  77.             println("    skipping: " + var4);
  78.          } else {
  79.             try {
  80.                println("    trying " + var4);
  81.                if (var4.driver.acceptsURL(var0)) {
  82.                   println("getDriver returning " + var4);
  83.                   return var4.driver;
  84.                }
  85.             } catch (SQLException var6) {
  86.             }
  87.          }
  88.       }
  89.  
  90.       println("getDriver: no suitable driver");
  91.       throw new SQLException("No suitable driver", "08001");
  92.    }
  93.  
  94.    public static synchronized void registerDriver(Driver var0) throws SQLException {
  95.       if (!initialized) {
  96.          initialize();
  97.       }
  98.  
  99.       DriverInfo var1 = new DriverInfo();
  100.       var1.driver = var0;
  101.       var1.driverClass = var0.getClass();
  102.       var1.driverClassName = var1.driverClass.getName();
  103.       writeDrivers.addElement(var1);
  104.       println("registerDriver: " + var1);
  105.       readDrivers = (Vector)writeDrivers.clone();
  106.    }
  107.  
  108.    public static synchronized void deregisterDriver(Driver var0) throws SQLException {
  109.       ClassLoader var1 = getCallerClassLoader();
  110.       println("DriverManager.deregisterDriver: " + var0);
  111.       DriverInfo var3 = null;
  112.  
  113.       int var2;
  114.       for(var2 = 0; var2 < writeDrivers.size(); ++var2) {
  115.          var3 = (DriverInfo)writeDrivers.elementAt(var2);
  116.          if (var3.driver == var0) {
  117.             break;
  118.          }
  119.       }
  120.  
  121.       if (var2 >= writeDrivers.size()) {
  122.          println("    couldn't find driver to unload");
  123.       } else if (getCallerClass(var1, var3.driverClassName) != var3.driverClass) {
  124.          throw new SecurityException();
  125.       } else {
  126.          writeDrivers.removeElementAt(var2);
  127.          readDrivers = (Vector)writeDrivers.clone();
  128.       }
  129.    }
  130.  
  131.    public static Enumeration<Driver> getDrivers() {
  132.       Vector var0 = new Vector();
  133.       Object var1 = null;
  134.       if (!initialized) {
  135.          initialize();
  136.       }
  137.  
  138.       Vector var6;
  139.       synchronized(DriverManager.class) {
  140.          var6 = readDrivers;
  141.       }
  142.  
  143.       ClassLoader var7 = getCallerClassLoader();
  144.  
  145.       for(int var3 = 0; var3 < var6.size(); ++var3) {
  146.          DriverInfo var4 = (DriverInfo)var6.elementAt(var3);
  147.          if (getCallerClass(var7, var4.driverClassName) != var4.driverClass) {
  148.             println("    skipping: " + var4);
  149.          } else {
  150.             var0.addElement(var4.driver);
  151.          }
  152.       }
  153.  
  154.       return var0.elements();
  155.    }
  156.  
  157.    public static void setLoginTimeout(int var0) {
  158.       loginTimeout = var0;
  159.    }
  160.  
  161.    public static int getLoginTimeout() {
  162.       return loginTimeout;
  163.    }
  164.  
  165.    /** @deprecated */
  166.    public static void setLogStream(PrintStream var0) {
  167.       SecurityManager var1 = System.getSecurityManager();
  168.       if (var1 != null) {
  169.          var1.checkPermission(SET_LOG_PERMISSION);
  170.       }
  171.  
  172.       logStream = var0;
  173.       if (var0 != null) {
  174.          logWriter = new PrintWriter(var0);
  175.       } else {
  176.          logWriter = null;
  177.       }
  178.  
  179.    }
  180.  
  181.    /** @deprecated */
  182.    public static PrintStream getLogStream() {
  183.       return logStream;
  184.    }
  185.  
  186.    public static void println(String var0) {
  187.       synchronized(logSync) {
  188.          if (logWriter != null) {
  189.             logWriter.println(var0);
  190.             logWriter.flush();
  191.          }
  192.  
  193.       }
  194.    }
  195.  
  196.    private static Class getCallerClass(ClassLoader var0, String var1) {
  197.       Object var2 = null;
  198.  
  199.       try {
  200.          var5 = Class.forName(var1, true, var0);
  201.       } catch (Exception var4) {
  202.          var5 = null;
  203.       }
  204.  
  205.       return var5;
  206.    }
  207.  
  208.    private static void loadInitialDrivers() {
  209.       String var0;
  210.       try {
  211.          var0 = (String)AccessController.doPrivileged(new GetPropertyAction("jdbc.drivers"));
  212.       } catch (Exception var6) {
  213.          var0 = null;
  214.       }
  215.  
  216.       DriverService var1 = new DriverService();
  217.       AccessController.doPrivileged(var1);
  218.       println("DriverManager.initialize: jdbc.drivers = " + var0);
  219.       if (var0 != null) {
  220.          while(var0.length() != 0) {
  221.             int var2 = var0.indexOf(58);
  222.             String var3;
  223.             if (var2 < 0) {
  224.                var3 = var0;
  225.                var0 = "";
  226.             } else {
  227.                var3 = var0.substring(0, var2);
  228.                var0 = var0.substring(var2 + 1);
  229.             }
  230.  
  231.             if (var3.length() != 0) {
  232.                try {
  233.                   println("DriverManager.Initialize: loading " + var3);
  234.                   Class.forName(var3, true, ClassLoader.getSystemClassLoader());
  235.                } catch (Exception var5) {
  236.                   println("DriverManager.Initialize: load failed: " + var5);
  237.                }
  238.             }
  239.          }
  240.  
  241.       }
  242.    }
  243.  
  244.    private static Connection getConnection(String var0, Properties var1, ClassLoader var2) throws SQLException {
  245.       Object var3 = null;
  246.       synchronized(DriverManager.class) {
  247.          if (var2 == null) {
  248.             var2 = Thread.currentThread().getContextClassLoader();
  249.          }
  250.       }
  251.  
  252.       if (var0 == null) {
  253.          throw new SQLException("The url cannot be null", "08001");
  254.       } else {
  255.          println("DriverManager.getConnection(\"" + var0 + "\")");
  256.          if (!initialized) {
  257.             initialize();
  258.          }
  259.  
  260.          Vector var11;
  261.          synchronized(DriverManager.class) {
  262.             var11 = readDrivers;
  263.          }
  264.  
  265.          SQLException var13 = null;
  266.  
  267.          for(int var5 = 0; var5 < var11.size(); ++var5) {
  268.             DriverInfo var6 = (DriverInfo)var11.elementAt(var5);
  269.             if (getCallerClass(var2, var6.driverClassName) != var6.driverClass) {
  270.                println("    skipping: " + var6);
  271.             } else {
  272.                try {
  273.                   println("    trying " + var6);
  274.                   Connection var7 = var6.driver.connect(var0, var1);
  275.                   if (var7 != null) {
  276.                      println("getConnection returning " + var6);
  277.                      return var7;
  278.                   }
  279.                } catch (SQLException var9) {
  280.                   if (var13 == null) {
  281.                      var13 = var9;
  282.                   }
  283.                }
  284.             }
  285.          }
  286.  
  287.          if (var13 != null) {
  288.             println("getConnection failed: " + var13);
  289.             throw var13;
  290.          } else {
  291.             println("getConnection: no suitable driver found for " + var0);
  292.             throw new SQLException("No suitable driver found for " + var0, "08001");
  293.          }
  294.       }
  295.    }
  296.  
  297.    static void initialize() {
  298.       if (!initialized) {
  299.          initialized = true;
  300.          loadInitialDrivers();
  301.          println("JDBC DriverManager initialized");
  302.       }
  303.    }
  304.  
  305.    private DriverManager() {
  306.    }
  307.  
  308.    private static native ClassLoader getCallerClassLoader();
  309. }
  310.